package SecondeStage.YiChang;

public class TryCatchFinally {
    public static void main(String[] args) {
        try {
            //
            String name1 ="你好";
            // 一旦发生异常，try代码块里后面的代码不再执行，直接进入到catch代码块
            int num = Integer.parseInt(name1);
            System.out.println("数字: "+num);
            // 如果异常没有发生，顺序执行try代码块内容，不会进入catch代码块

        }catch (ArithmeticException e){
            //1.异常发生时，系统将异常封装成Exception对象e，传递给catch
            //2.得到异常对象后，程序员自己处理
            //3.代码如果没有异常，catch代码块不执行
            System.out.println("出现异常的原因是： " + e.getMessage());
        }catch (NullPointerException e){
            // 如果try代码块可能会议多个异常，可以使用多个catch 分别捕获不同的异常，相应处理
            // 要求子类异常写在前面，父类异常写在后面
            System.out.println("出现异常的原因是： " + e.getMessage());
        }catch (Exception e){
            
        }finally {
            // 不管try代码有没有异常发生，始终要执行finally，所以图层将释放资源的代码放在finally
            // 如果没有finally，语法也可以通过
            System.out.println("finally代码块被执行...");
        }
        System.out.println("程序继续执行...");
    }
}
